import { defineStore } from 'pinia'

// 参数1：store的id，id名称是唯一不要重复，起到命名空间的作用,一般建议和文件名一致
const useNumStore = defineStore('num', {
  state: () => ({
    count: 100,
    users: ['张三', '李四']
  }),
  // 计算属性 xxxStore.doubleCount 当属性去获取
  getters: {
    doubleCount: (state) => state.count * 2
  },
  // 推荐修改pinia中数据的写法 它可以写异步也可以同步
  // 建议不要在异步是直接去修改state数据，还是在异步中调用同步方法来完成数据的修改
  actions: {
    // 如果是修改的单个数据，直接修改
    // setCount(n) {
    //   this.count += n
    // }
    // 批量修改
    setCount(n) {
      this.$patch((state) => {
        state.count += n
        state.users.push(Date.now())
      })
    },
    asyncSetCount(n) {
      setTimeout(() => {
        // 调用同步中的方法
        this.setCount(n)
      }, 1000)
    }
  }
})

export default useNumStore
